using Joy.Erp.BasicArchives.Core.Filters;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;

namespace Joy.Erp.BasicArchives.ItemMasters
{
    public interface IBomMasterAppService
    {
        Task<BomMasterDto> GetAsync(Guid id);
        Task<BomComponentDto> GetChildAsync(Guid id);
        Task<BomMasterDto> FindAsync(string filter);
        Task<BomMasterDto> FindBySourceKeyAsync(string sourceKey, string sourceType);
        Task<PagedResultDto<BomMasterDto>> GetListAsync(FilterRequestDto input);
        Task<PagedResultDto<BomMasterDto>> QueryAsync(FilterGroupRequestDto input);
        Task<PagedResultDto<BomComponentDto>> QueryChildrenAsync(FilterGroupRequestDto input);
        Task<BomMasterDto> CreateAsync(BomMasterCreateDto input);
        Task<BomMasterDto> UpdateAsync(Guid id, BomMasterUpdateDto input);
        Task<BomMasterDto> SubmitAsync(Guid id);
        Task<BomMasterDto> ApproveAsync(Guid id);
        Task<BomMasterDto> UnApproveAsync(Guid id);
        Task DeleteAsync(Guid id);
        Task<List<BomComponentDto>> GetLeafChildrenAsync(Guid itemMasterId);
    }
}